Smarter Table Editing II
In VimTip547 I described some functions that enable easier navigation and editing of tables. I have considerably enhanced the functionality and placed all the relevant code in a script file . The idea of the script is to automatically extract fields from a table row and use that information to create maps that aid in editing and navigation of the table. The user first marks a table row as the table heading. The line does not literally have to be the table heading, but it should be representative of the typical row of the table in question. After this step the script maps tab and shift-tab keys to move between fields. These mappings work in both insert and normal modes. The tab mapping is especially useful in insert mode as it inserts the correct amount of padding to reach the start of the next field. The script also has an alignment feature that aligns the fields of the row with that of the heading. Editing a pre-existing table frequently leads to misaligned rows and this feature alleviates the need to manually add/remove padding. To better illustrate the functionality of the script, I have created the table below: This table illustrates the use of table.vim script th marks a line as table heading and activates maps for and keys th must be invoked on a well formed line with the right number of columns This means that the above line does not qualify Also notice that the field separator is atleast two spaces -------------------------------------------------------------------- when the maps are active, pressing here <-- moves here here <-- moves here < moves back to "< " <** here moves to "<**" above -------------------------------------------------------------------- The maps for and work in insert and normal modes, and can be deactivated by pressing tt pressing tt again, re-enables the maps -------------------------------------------------------------------- The script has some very basic support for field alignment It is very easy to get out of alignment when editing ta on the line above will fix the line to: It is very easy to get out of alignment when editing -------------------------------------------------------------------- ta can be very handy if the user wants to expand or contract fields, just change the width of the fields on the heading line and press th to mark the new heading and then numta on the top line of the table. num is the number of lines in the table -------------------------------------------------------------------- The alignment command fails when a row has more fields than the heading or when the contents of a field don't fit inside the field, as specified by the heading row case1 is this row case2 is this row ... ... this is another example of case2, there is no space for field separator on the first field on above line If you don't like the default mappings change them to whatever you like. The mappings are defined on top of the table.vim script file. To install the script, place table.vim in the vim macros directory and source it in your vimrc using: source $VIMRUNTIME/macros/table.vim If you simply want to check the functionality of the script, place the script file in your current directory, open vim in the same directory and use :so table.vim The script can also be downloaded from http://www.techuser.net/files Comments I think it belongs in the documentation of the corresponding script. No need to allocate multiple tip/script ids for the same thing. Hence I vote -1 here but 1 on the script. ---- The scripts section is a repository for code and the tips section is about solutions to text-editing problems. The two serve very different and distinct purposes. Recently I posted VimTip548 and someone turned it into a script, . No one questioned it, as it was a very natural thing to do. Similarly, I have divided this tip into a download part and a problem/solution part, and I consider it good organization. I think people should be using the scripts section only to provide file downloads. If they have non-trivial comments that provide motivation for downloading the script, they should be putting them in the tips section. That way there will be one central place where users can look for solutions to text-editing problems. Please post your opinion on the issue as a comment. I suggest that the site maintainers consider all the discussion here and turn it into a set of guidelines for people posting tips/scripts. ---- "I think people should be using the scripts section only to provide file downloads." I disagree. When you upload a script you want to motivate then and there why people will find it useful. Tips and scripts are both meant for problem/solution descriptions; I select which section to add something depending on whether I am uploading any significant amount of code that people can use out of the box (dump into plugins, etc.). If everyone followed you and simply put up a .vim file or a tarball in the scripts section, linking to it from a tip with an explanation of what it does, I think vim online would be a lot less useful than it is now. The scripts section would just be a glorified repository, and we could get rid of it from the webpages altogether, simply using the script IDs transparently in the background. There is a reason why both tips and scripts have lots of room for explanation and description. Duplicating something in both places is just noise. I realize that whether something constitutes a tip or script is a subjective opinion. You may disagree with me, but it is not worth debating imo. Select one of the two sections. Just one. As a postscript, it is interesting to compare the karma of your VimTip548 and Robert Kelly's vimscript #763. I will hazard the hypothesis that the vim online community has a pretty good idea of where that particular (very useful!) idea belongs. ----